import pandas as pd

# 读取数据
data = pd.read_csv("C:\\Users\\董柳蕙\\Downloads\\heart.csv")

# 定义要处理的特征
columns_to_fix = ['thalach', 'oldpeak', 'ca']

# 使用 IQR 检测异常值并用中位数替换
for col in columns_to_fix:
    # 计算 Q1、Q3 和 IQR
    Q1 = data[col].quantile(0.25)
    Q3 = data[col].quantile(0.75)
    IQR = Q3 - Q1
    
    # 定义异常值的边界
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    
    # 计算中位数
    median_value = data[col].median()
    
    # 替换异常值为中位数
    data[col] = data[col].apply(lambda x: median_value if x < lower_bound or x > upper_bound else x)

# 保存处理后的数据
data.to_csv('D:\\heart_cleaned.csv', index=False)

print("异常值已使用中位数替换，并保存为 heart_cleaned.csv 文件。")
